package com.dhj.yygh.scheduled;

import com.dhj.yygh.constant.MqConst;
import com.dhj.yygh.service.RabbitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
@EnableScheduling // 开启定时任务(Spring 提供)
public class ScheduledTask {

    @Autowired
    RabbitService rabbitService;

    // 每天 8 点执行方法(就医提醒)
    /*
    流程梳理
    1.每天八点，taskPatyment 发送 mq 消息到 service-order
    2.service-order 监听到该 mq 消息，执行对应的方法，查询当天有预约就诊且未取消预约的就诊人信息
    3.service-order 查询到就诊人信息后，继续发送 mq 消息到 service-msm
    4.service-msm 监听到 mq 消息，执行发送短信的方法
    5.短信发送成功，用户收到就诊提示
     */
    /*
    cron 表达式，设置执行间隔
     */
    @Scheduled(cron = "0 0 0 8 * ?")// 每天八点提醒(使用在线的 cron 表达式来设置)
    public void taskPatyment() {
        // 设置 mq 参数,每天八点发送 mq 消息
        rabbitService.sendMessage(MqConst.EXCHANGE_DIRECT_TASK, MqConst.ROUTING_TASK_8, "");
    }
}
